既然是第一天那肯定是從我們的第一題開始做起的啦~
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
從 nums 中找到兩個數字,其相加結果等於 target,並返回這兩個數字的索引值,組成一個容器(可以是 List 或 Object)。根據題目的限制和敘述,可以推斷只會有唯一一組符合條件的解,且沒有強制要求結果的返回順序。
1.初始化一個空的向量 ans,用來存儲結果。
2.初始化一個空的哈希表 hash,用來存儲數字與它們對應的目標值互補。
3.遍歷數組:
如果 hash 中已經存在當前數字 nums[i],那麼這意味著在之前的迭代中,我們已經找到了這個數字的互補值。
如果 hash 中不存在當前數字,那麼將 target - nums[i] 作為鍵、當前索引 i 作為值存入哈希表,等待後續找到與其匹配的數字。
4.最後,一旦找到兩個數字,返回它們的索引值。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash; // 用於記錄數字的互補值及其索引
for (int i = 0; i < nums.size(); i++) {
int complement = nums[i]; // 當前數字
if (hash.find(complement) != hash.end()) {
// 找到互補值時,直接返回索引結果
return {i, hash[complement]};
}
hash[target - complement] = i; // 儲存互補值與當前索引
}
return {}; // 如果未找到符合條件的配對,返回空容器
}
};
那麼今天就先講解到這邊~明天開始會進入medium難度哈哈哈